//分时函数
// const datas = new Array(100000).fill(0).map((_, i)=> i);
// const taskHandle = (_,i)=>{
// 	const div = document.createElement('div');
// 	div.innerText = i;
// 	document.body.appendChild(div)
// }
// const scheduler = (task) =>{
// 	//如果一秒执行一次
// 	const now = performance.now()
// 	setTimeout(()=>{
// 		task(()=> performance.now() - now <= 10);
// 	},1000)
// }

export function performChunk(datas,taskHandle,scheduler){
	if(typeof datas === 'number'){
		datas = {
			length:datas
		}
	}
	if(datas.length === 0){
		return;
	}
	let index = 0;
	//开启下一个分片函数
	function _run(){
		if(index >= datas.length){
			return;
		}
		//一个渲染帧中，空闲的时候开启分片执行；
		// requestIdleCallback((idle)=>{
		// 	while(idle.timeRemaining() > 0 && index < datas.length){
		// 		taskHandle(datas[index],index)
		// 		index++
		// 	}
		// 	//此次分片执行完成
		// 	_run();
		// })
		scheduler((goOn)=>{
			while(goOn() && index < datas.length){
				taskHandle(datas[index],index)
				index++
			}
			//此次分片执行完成
			_run();
		})
	}
	_run();
}
export function browserPermChunk(datas,taskHandle){
	const scheduler = (task) =>{
		requestIdleCallback((idle)=>{
			task(()=>idle.timeRemaining())
		})
	}
	performChunk(datas,taskHandle,scheduler)
}